#pragma once
// 实用工具

// 1.获取时间
// 2.判断文件是否存在
// 3.获取文件路径
// 4.创建文件

#include <iostream>
#include <string>
#include <ctime>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

namespace mylog
{
    namespace util
    {
        // 时间类
        class Date
        {
        public:
            static time_t now()
            {
                // 返回当前时间
                return time(nullptr);
            }
        };

        class File
        {
        public:
            // 判断文件是否存在
            static bool exist(const std::string &pathName)
            {
                struct stat st;
                // 成功返回0，失败返回-1
                return stat(pathName.c_str(), &st) == 0;
            }

            // 获取前缀文件路径
            static std::string path(const std::string &pathName)
            {
                //  ./abc/a.txt
                // 找最后一个'/'
                size_t pos = pathName.find_last_of("/\\");
                if (pos == std::string::npos)
                {
                    // 找到字符串结尾，说明是当前目录
                    return ".";
                }
                else
                {
                    // pos+1代表将最后一个/也截取
                    return pathName.substr(0, pos + 1);
                }
            }

            // 创建目录
            static void CreateDirectory(const std::string &pathName)
            {
                size_t pos, tag = 0;
                while (tag < pathName.size())
                {
                    //  ./abc/cdf/eef/a
                    pos = pathName.find_first_of("/\\", tag);
                    // 最后一个目录直接创建
                    if (pos == std::string::npos)
                        mkdir(pathName.c_str(), 0777);
                    else
                    {
                        // 创建父级目录
                        std::string parent_dir = pathName.substr(0, pos + 1);
                        if (exist(parent_dir))
                        {
                            // 存在则不需要创建
                            tag = pos + 1;
                            continue;
                        }
                        // 不存在则创建
                        mkdir(parent_dir.c_str(), 0777);
                        tag = pos + 1;
                    }
                }
            }
        };
    }
}